Delphi vs Olympus Camera

Otázka od: Michael Janecek

11. 8. 2004 12:42


Zdravim,

    Pokusim se pripojit fotak (Olympus C5060 WideZoom) a nejak s nim
pracovat. Nutno dodat, ze mi to moc nejde   Olympus dodava SDK, jehoz
soucasti je ActiveX prvek pro Delphi. To se zda byt ok, ale kdyz se pokusim
nevo vyfotit, vraci mi to external error, takze po nem evidentne chci neco
spatnym zpusobem.

Jak je to spatne: viz kod kousek dole... neresil jste nekdo neco podobneho,
nebo stejneho? ... potrebuju trochu nakopnout.

Dik,

    M. Janecek





Const
  CamNum=0;

procedure TForm1.Button1Click(Sender: TObject);
var buffer:olevariant;
    PicSize:integer;
    p:PByteArray;
    f:file;
    written:integer;

begin

Camera.Capture (CamNum, 0);
  Camera.propCurrentPicture [CamNum] := Camera.propPicCount [CamNum];
  PicSize := Camera.propPicSize [CamNum];
  VarArrayRedim (Buffer, PicSize-1);
  Camera.GetPicture (CamNum, PicSize, Buffer);
  P := VarArrayLock (Buffer);

  AssignFile (F, ExtractFilePath (Application.ExeName) + 'picture.jpg');
  Rewrite (F, 1);
  BlockWrite (F, P^, PicSize, Written);
  CloseFile (F);
  VarArrayUnLock (Buffer);
  Image1.Picture.LoadFromFile (ExtractFilePath (Application.ExeName) +
'picture.jpg');
end;


Odpovedá: Vaclav Krmela

11. 8. 2004 14:25

> From: Michael Janecek
>
> kdyz se pokusim nevo vyfotit, vraci mi to external error.....
>

Nechybi tam na zacatku
  Camera.Connect(CamNum);
A na konci
  Camera.DisConnect(CamNum);

Jinak, ja nemam moc rad ActiveX komponenty.
Sam jsem radeji pouzil volani funkci z RyeDLL.DLL knihovny.

Vaclav Krmela



Odpovedá: Michael Janecek

11. 8. 2004 15:20

Zdravim,

Kdyz tam dam .connect, oznami mi to AV v ntdll.dll ... pri Camera.capture.
Bez connectu to padne az na Camera.propCurrentPicture

Napada me, jestli po me nechce definovat rozliseni, atp predem... na
developer.olympus.com maj tenhle vzorek a tvrdej, ze je funkcni presne v
prostedi, ktery pouzivam (D6E, WinXPh).

btw> Nebyl by nejaky popis funkci RyeDLL.dll, prosim pekne??  

Dik za kazdou pomoc

M.


----- Original Message -----
From: "Vaclav Krmela" <krmela@ustinadorlici.cz>
To: <delphi-l@clexpert.cz>
Sent: Wednesday, August 11, 2004 3:14 PM
Subject: Re: Delphi vs Olympus Camera


> > From: Michael Janecek
> >
> > kdyz se pokusim nevo vyfotit, vraci mi to external error.....
> >
>
> Nechybi tam na zacatku
> Camera.Connect(CamNum);
> A na konci
> Camera.DisConnect(CamNum);
>
> Jinak, ja nemam moc rad ActiveX komponenty.
> Sam jsem radeji pouzil volani funkci z RyeDLL.DLL knihovny.
>
> Vaclav Krmela
>
>
>
>
>
>


Odpovedá: Vaclav Krmela

11. 8. 2004 16:52

> From: Michael Janecek
>
> Kdyz tam dam .connect, oznami mi to AV v ntdll.dll ... pri
Camera.capture.
> Bez connectu to padne az na Camera.propCurrentPicture

Komponenta Camera je vlozena na formulari, nebo je vytvarena dynamicky
za behu? Mas prava administratora? Pokud ne, asi budes muset
nainstalovat OlymRye.sys driver. Mas zaregistrovany podporovany typ
fotoaparatu v registrech Windows? Mas licencni soubor rye.lic na
spravnem miste?

S ActiveX je hodne problemu. Vykasli se ActiveX a volej funkce DLL. Je
to prime a jednoduche.

> Napada me, jestli po me nechce definovat rozliseni, atp predem...

Ne. V nejakem rezimu fotoaparat vzdy je.

> btw> Nebyl by nejaky popis funkci RyeDLL.dll, prosim pekne??  

Popis je shodny s popisem funkci ActiveX komponenty. Je v SDK v
podadresari V3.4 v souboru "SDK 3.4 Reference Guide.pdf".
Definice konstant a typu je v hlavickovem souboru ryecommon.h.
Deklarace funkci DLL knihovny je v RyeDLL.h souboru.

Vaclav Krmela